In various applications of data processing, it is often necessary to perform different processes to refine or manipulate input data in order to obtain quality output data. The different processes performed on the input data may include the following: concealing erroneous input data (hereinafter also referred to as error recovery), reducing the noise level of the input data (hereinafter also referred to as noise reduction), and interpolating subsamples of the input data (hereinafter also referred to as subsample interpolation).
Conventionally, the different processes mentioned above have been performed independently and separately by different systems or circuits. Thus, if the input data are to be processed by two or more different processes, two or more systems are needed to carry out the required functions. For example, if both error recovery and noise reduction are to be performed on input data, the input data would be processed separately by an error recovery system to obtain error recovered data. The error recovered data would then be processed by a noise reduction system to obtain noise-reduced output data.
The conventional serial structure described above suffers several shortcomings. First, the conventional serial structure is complex to implement and typically contains significant hardware redundancy. Second, such serial configuration also causes other processing inefficiencies. For example, even if only a small portion of the input data contains errors, the entire stream of input data would be processed through the error recovery system. Such indiscriminate processing of input data regardless of the condition of the input data results in significant waste of processing time and resources. Moreover, since the entire input data are processed through all the different processes in this serial, pipelined configuration, there is no control mechanism to control how different portions of the input data should be processed. For example, the users cannot choose to perform only noise reduction on some portions of the data and error recovery on other portions of the data.
In addition to the shortcomings mentioned above, the expandability and adaptability of a conventional serial structure are relatively low. For example, major modifications and reconfiguration of the systems are required to accommodate changes in processing requirements. Similarly, it is difficult to expand the serial structure to accommodate new or additional processes.